package 力扣;

/**
 * 给定一个字符串，你的任务是计算这个字符串中有多少个回文子串。
 * 具有不同开始位置或结束位置的子串，即使是由相同的字符组成，也会被视作不同的子串。
 示例 1：
 输入："abc"
 输出：3
 解释：三个回文子串: "a", "b", "c"

 示例 2：
 输入："aaa"
 输出：6
 解释：6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
  

 */

public class _647回文子串 {

    private  int cnt = 0;

    // 中心拓展: 枚举每一个可能的回文中心，然后用两个指针分别向左右两边拓展，当两个指针指向的元素相同的时候就拓展，否则停止拓展。
    public int countSubstrings(String s) {
        int len = s.length();
        for (int i = 0; i <len ; i++) {
            // 回文中心的
            extendsSubstrings(s,i,i); // 为偶数的情况
            extendsSubstrings(s,i,i+1); // 为奇数的情况
        }
        return cnt;
    }
    //start 左起始位置，end 右起始位置
    private void extendsSubstrings(String s, int start, int end) {

        while( start >=0 && end < s.length() && s.charAt(start) == s.charAt(end)){
            start--;
            end++;
            cnt++;
        }
    }
}
